package com.acmedcare.framework.exchange.center.entity.bean;

import com.acmedcare.framework.exchange.center.entity.dto.TaskStatusEnum;
import com.acmedcare.framework.exchange.center.entity.dto.TaskTypeEnum;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;

/**
 * 
 * 
 * @author stefan.gu
 * @date 2019-09-02 14:08:01
 */
@Data
@TableName("center_task")
public class Task implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 任务表主键
	 */
	@TableId
	private Long taskId;
	/**
	 * 任务名称
	 *
	 */
	@ApiModelProperty("任务名称")
	private String name;

	/**
	 * 任务描述
	 */
	@ApiModelProperty("任务描述")
	private String description;
	/**
	 * 任务类型
	 */

	@ApiModelProperty("任务类型")
	private TaskTypeEnum type;

	/**
	 * 任务类型
	 */
	@ApiModelProperty("任务状态")
	private TaskStatusEnum status;
	/**
	 * 任务执行主类
	 */
	@ApiModelProperty("任务执行主类")
	private String executeMainClass;
	/**
	 * 依赖jar包（用逗号隔开）
	 */
	@ApiModelProperty("提交给依赖的jar文件")
	private String dependJar;
	/**
	 * 执行的jar文件
	 */
	@ApiModelProperty("执行jar文件")
	private String executeJar;
	/**
	 * 任务版本
	 */
	@ApiModelProperty("任务版本")
	private String version;

	/**
	 * 执行时间
	 */
	@ApiModelProperty("预计执行时间")
	private Date executeTime;

	/**
	 * 执行频次
	 */
	@ApiModelProperty("执行cron")
	private String executeCron;
	/**
	 * 是否重试
	 */
	@ApiModelProperty("是否重试")
	private Boolean matchRetry;
	/**
	 * 是否通知
	 */
	@ApiModelProperty("是否通知")
	private Boolean matchNotice;

	/**
	 * 预警主题
	 */
	@ApiModelProperty("预警主题")
	private String noticeTopic;
	/**
	 * 创建时间
	 */
	@ApiModelProperty("创建时间")
	private Date createTime;

	/**
	 * 最后运行时间
	 */
	@ApiModelProperty("最后运行时间")
	private Date lastRunTime;

	@ApiModelProperty("调度类型")
	private SchedulerType schedulerType;

	@ApiModelProperty(value = "可执行jar的名称", required = true)
	private String jarName;

	@ApiModelProperty("分组名称")
	private String groupName;

	@ApiModelProperty("超时时间,单位分钟")
	private int timeOut;

	@ApiModelProperty("采集器名称")
	private String agentName;

	@ApiModelProperty("插件名称")
	private String pluginName;
}
